/*
 * 文件名：ParkScreenMsgThread.java	 
 * 时     间：下午6:16:19
 * 作     者：Administrator       
 * 版     权： 2012-2022 湖南智软网络科技, 公司保留所有权利.
 * 联     系：http://www.073586.com/
 */
package com.local.manager.thread;

import java.io.IOException;

import com.cz0735.led.entity.Cntr1ByLayerEntity;
import com.cz0735.led.entity.Command;
import com.cz0735.led.entity.CommandGroup;
import com.cz0735.led.utils.CommondUtil;
import com.cz073586.tools.util.Tools;
import com.local.common.CommonContains;
import com.local.common.MessageContains;
import com.local.entity.vo.ScreenMessage;
import com.local.model.Screen;
import com.qianhai.common.utils.JsonUtil;
import com.qianhai.common.utils.Log4jUtil;

/**
 * 类描述:发送屏幕消息
 * 
 * @ClassName: ParkScreenMsgThread
 * @author Administrator
 * @date 2016年4月26日 下午6:16:19
 */
public class ParkTwoScreenMsgThread implements Runnable {

	private static Log4jUtil	log	= Log4jUtil.getLog4j(ParkTwoScreenMsgThread.class);

	private ScreenMessage		screenMessage;

	private Screen				screen;

	public ParkTwoScreenMsgThread(ScreenMessage screenMessage, Screen screen) {
		super();
		this.screenMessage = screenMessage;
		this.screen = screen;
	}

	@Override
	public void run() {
		if (!Tools.isEmpty(screen)) {
			//发送屏幕消息
			PushMsg();
			
			//发送信号灯
			pushLight();
		
		}
	}

	private void pushLight()
	{
		log.debug("---------------开始发送信号灯命令------------");
		if(CommonContains.LIGHT_FLAG.equals(screen.getAttr1())){
			try {
				CommondUtil.openSwitch(screen.getScreenIp(), Integer.valueOf(screen.getPortNo()), Integer.valueOf(screen.getScreenNo()));
			} catch (NumberFormatException e) {
				log.error("发送信号灯命令类型转换异常");
			} catch (IOException e) {
				log.error("发送信号灯命令IO异常");
			}
			log.debug("---------------发送信号灯命令结束------------");
		}
		
	}

	private void PushMsg()
	{
		try {
			log.debug("开始发送屏幕消息----->车牌号:" + screenMessage.getHeadMsg());
			CommandGroup grpCommand = new CommandGroup();
			grpCommand.setIp(screen.getScreenIp());
			grpCommand.setPort(Integer.valueOf(screen.getPortNo()));
			String msg = null;
			// 每个命令都需要有个控制字
			Cntr1ByLayerEntity ctr1 = new Cntr1ByLayerEntity();
			ctr1.setFixShow(false); // 空闲时显示,固化显示到flash缓存
			ctr1.setSound(true); // 是否播声音
			ctr1.setLayer(1); // 显示在第几层
			ctr1.setShowTimeLong(5); // 停留时间 15*5 秒，
			Command cmd1 = new Command(); // 控制第一层
			cmd1.setCmdHead(true); // 标记命令头
			cmd1.setMachineNumber(Integer.parseInt(screen.getScreenNo())); // 一号机
			cmd1.setCntr1(ctr1); // 控制字1
			cmd1.setContent(screenMessage.getHeadMsg());
			/*
			 * if(!Tools.isEmpty(screenMessage.getSecMsg())){
			 * cmd1.setContent(screenMessage.getHeadMsg()+" "
			 * +screenMessage.getSecMsg()); // 显示文本内容 }
			 */
			msg = "";
			/*for (int i = 0; i < 16 - cmd1.getContent().getBytes("GB2312").length; i++) {
				msg += " ";
			}*/
			cmd1.setContent(cmd1.getContent() + msg);
			cmd1.setRowspan(false); // 标记被夸层，内容显示FF 但是长度保持与上一层一致.
			grpCommand.addCommand(cmd1); // 添加命令
			// 每个命令都需要有个控制字
			Cntr1ByLayerEntity ctr2 = new Cntr1ByLayerEntity();
			ctr2.setFixShow(false); // 空闲时显示,固化显示到flash缓存
			ctr2.setSound(true); // 是否播声音
			ctr2.setLayer(2); // 显示在第几层
			ctr2.setShowTimeLong(5); // 停留时间 15*5 秒，
			Command cmd2 = new Command(); // 控制第一层
			cmd2.setCmdHead(false); // 标记命令头
			cmd2.setMachineNumber(Integer.parseInt(screen.getScreenNo())); // 一号机
			cmd2.setCntr1(ctr2); // 控制字1
			if (!Tools.isEmpty(screenMessage.getFootMsg())) {
				ctr2.setSound(true); // 是否播声音
				if (MessageContains.MEMBER_CAR_TYPE.equals(screenMessage.getSecMsg())) {
					cmd2.setContent(screenMessage.getSecMsg() + screenMessage.getFootMsg()); // 显示文本内容
				} else if (MessageContains.FREE_CAR_TYPE.equals(screenMessage.getSecMsg())) {
					cmd2.setContent(screenMessage.getSecMsg()+MessageContains.GOOD_BYE_MSG); // 显示文本内容
				} else {
					cmd2.setContent(screenMessage.getFootMsg()); // 显示文本内容
				}
			} else {
				ctr2.setSound(true);
				cmd2.setContent(screenMessage.getThirdMsg()); // 显示文本内容
			}
			/*
			 * if(!Tools.isEmpty(screenMessage.getSecMsg())){
			 * cmd1.setContent(screenMessage.getHeadMsg()+" "
			 * +screenMessage.getSecMsg()); // 显示文本内容 }
			 */
			msg = " ";
			/*for (int i = 0; i < 16 - cmd2.getContent().getBytes("GB2312").length; i++) {
				msg += " ";
			}*/
			cmd2.setContent(cmd2.getContent() + msg);
			cmd2.setRowspan(false); // 标记被夸层，内容显示FF 但是长度保持与上一层一致.
			grpCommand.addCommand(cmd2); // 添加命令
			// 每个命令都需要有个控制字
			Cntr1ByLayerEntity ctr3 = new Cntr1ByLayerEntity();
			ctr3.setFixShow(false); // 空闲时显示,固化显示到flash缓存
			ctr3.setSound(false); // 是否播声音
			ctr3.setLayer(3); // 显示在第几层
			ctr3.setShowTimeLong(5); // 停留时间 15*5 秒，
			Command cmd3 = new Command(); // 控制第一层
			cmd3.setCmdHead(false); // 标记命令头
			cmd3.setMachineNumber(Integer.parseInt(screen.getScreenNo())); // 一号机
			if (!Tools.isEmpty(screenMessage.getFootMsg())) {
				ctr3.setSound(false); // 是否播声音
				cmd3.setContent(screenMessage.getFootMsg()); // 显示文本内容
			} else {
				ctr3.setSound(false);
				cmd3.setContent(screenMessage.getThirdMsg()); // 显示文本内容
			}
			cmd3.setCntr1(ctr3); // 控制字1
			msg = "";
			/*for (int i = 0; i < 16 - cmd3.getContent().getBytes("GB2312").length; i++) {
				msg += " ";
			}*/
			cmd3.setContent(cmd3.getContent() + msg);
			cmd3.setRowspan(false); // 标记被夸层，内容显示FF 但是长度保持与上一层一致.
			grpCommand.addCommand(cmd3); // 添加命令

			Cntr1ByLayerEntity ctr4 = new Cntr1ByLayerEntity();
			ctr4.setFixShow(false); // 空闲时显示,固化显示到flash缓存
			ctr4.setLayer(4); // 显示在第几层
			ctr4.setShowTimeLong(5); // 停留时间 15*5 秒，

			Command cmd4 = new Command();// 控制第四层
			cmd4.setCmdHead(false);
			cmd4.setMachineNumber(Integer.parseInt(screen.getScreenNo())); // 一号机
			cmd4.setRowspan(false); // 标记被夸层，内容显示FF 但是长度保持与上一层一致.
			if (!Tools.isEmpty(screenMessage.getFootMsg())) {
				ctr4.setSound(false); // 是否播声音
				cmd4.setContent(screenMessage.getFootMsg()); // 显示文本内容
			} else {
				ctr4.setSound(false);
				cmd4.setContent(screenMessage.getThirdMsg()); // 显示文本内容
			}
			msg = "";
			/*for (int i = 0; i < 16 - cmd4.getContent().getBytes("GB2312").length; i++) {
				msg += " ";
			}*/
			cmd4.setContent(cmd4.getContent() + msg);
			cmd4.setCntr1(ctr4); // 控制字1
			grpCommand.addCommand(cmd4); // 添加命令
			// grpCommand.printCmd();
			CommondUtil.executeComondGrop(grpCommand);
			log.debug("开始发送屏幕消息----->车牌号:" + screenMessage.getHeadMsg() + "<----结束");
		} catch (Exception e) {
			log.debug("------------发送屏幕消息异常-------------屏幕" + JsonUtil.getJsonString(screen) + "--消息体:"
					+ JsonUtil.getJsonString(screenMessage));
		}
	}

}
